文章目录
  1. 1. 什么是内存泄露?
  2. 2. 为啥会发生?
  3. 3. 如何避免?

什么是内存泄露?

一些对象不再被应用程序使用了,但是GC却不能回收它们,因为还有引用指向它们。

为啥会发生?

当生命周期长的对象(假设叫A)持有一个生命周期短的对象(假设叫B)引用,B没有用时却不能被及时销毁。

如何避免?

  • 注意集合类的使用:HashMap, ArrayList等。当它们被申明为static时,它们的生命周期和应用程序一样长。

  • 注意事件监听和回调。当监听器被注册后,没有用时却没有注销监听器,导致监听器一直存在。

  • 类自己管理内存时,编程者要有内存泄露意识。一个对象的成员变量指向其他对象的引用要置null。

文章目录
  1. 1. 什么是内存泄露?
  2. 2. 为啥会发生?
  3. 3. 如何避免?